//定义全局变量
const app = getApp()
const gb = app.globalData
const wxp = gb.wxp
//数据库
const db = wx.cloud.database()//数据库
//采用MQTT协议
const mqtt = require("../../utils/mqtt")



Page({
  /**
   * 页面的初始数据
   */
  data: {
    client: {},//MQTT从机

    index:0,
    type:['格力','美的'],

    air_pwr: false,//空调电源
    temp_value: '-',//温度值，默认为'-'
    air_mode: false,//空调模式，默认为制冷
    wind_speed: 2,//风速，默认为中挡位
    wind_mode: true,//是否扫风，默认开启
    sleep: false,//睡眠模式，默认关闭

    operation:0 //总配置
  },
  bindPickerChange: function(event) {
    this.setData({
      index : event.detail.value
    })
    wx.showToast({
      title: '型号已更换',
      icon: "none"
    })
  },
  //空调电源
  AirPower: function (event) {
    let sw
    this.data.air_pwr = !(this.data.air_pwr)
    sw = this.data.air_pwr
    let Data=sw?1:0
      //获取上次温度
      db.collection('air-conditioning').doc('8e5be7055f7dc90a016af5ab67450cec').get().then(res=>{
        if(Data)
        {
          this.setData({
            temp_value:res.data.temp
          })
        }
        else
        {
          this.setData({
            temp_value: '-'
          })
        }
      })
      this.setData({
        air_pwr: this.data.air_pwr
      })
      gb.client.publish('SmartHome', JSON.stringify({Air_PWR:Data}), function (err) {
        if (!err)
        {
          if(sw)
          console.log("成功开空调")
          else
          {
            console.log("成功关空调")
          }
        }
      })
  },
  //空调模式
  work_mode: function (event) {
    var that = this
    this.data.air_mode = !(this.data.air_mode)
    let sw= this.data.air_mode
    let Data=sw?1:0
    if(that.data.air_pwr==true)
    {
      this.setData({
        air_mode: this.data.air_mode
      })
      console.log('空调当前模式为:',Data)
      //更新数据库
      db.collection('air-conditioning').doc('8e5be7055f7dc90a016af5ab67450cec').update({
        data:{
         mode: this.data.air_mode
        }
      }).then(res=>{
        console.log('成功更新数据点空调模式')
      })
      if(sw)
          console.log("除湿")
          else
          console.log("制冷")
      // gb.client.publish('SmartHome', JSON.stringify({Air_WorkMode:Data}), function (err) {
      //   if (!err)
      //   {
      //     if(sw)
      //     console.log("除湿")
      //     else
      //     console.log("制冷")
      //   }
      // })
      //对模式数据进行处理
      this.data.operation&=~(1<<6)//舍弃第七位配置(即写0)
      this.data.operation|=(Data<<6)//第七位配置数据重新赋值
      db.collection('air-conditioning').doc('8e5be7055f7dc90a016af5ab67450cec').update({
        data:{
          operation:this.data.operation
        }
      })
   }
   else
   {
    console.log("空调未开")
   }
  },
  //调温度和风速
  Temp_Wind: function (event) {
    if (this.data.air_pwr == false) {
      this.data.temp_value = '-'
      console.log("空调未开")
      return
    }
    else {
      if (event.target.id == "up1") {
        if (this.data.temp_value < 30) {
          this.data.temp_value++
          this.setData({
            temp_value: this.data.temp_value
          })
          //更新数据库temp
          db.collection('air-conditioning').doc('8e5be7055f7dc90a016af5ab67450cec').update({
            data:{
            temp: this.data.temp_value
            }
          }).then(res=>{
            console.log('%d ℃', this.data.temp_value)
            console.log('成功更新数据库温度')
          })
          // gb.client.publish('SmartHome', JSON.stringify({Air_Temp:this.data.temp_value}), function (err) {
          //   if (!err)
          //   console.log('%d ℃', this.data.temp_value)
          // })
        }
        else {
          console.log('%d ℃', this.data.temp_value)
          console.log("温度已达上限")
        }
      }
      else if (event.target.id == "down1") {
        if (this.data.temp_value > 16) {
          this.data.temp_value--
          this.setData({
            temp_value: this.data.temp_value
          })
          //更新数据库temp
          db.collection('air-conditioning').doc('8e5be7055f7dc90a016af5ab67450cec').update({
            data:{
            temp: this.data.temp_value
            }
          }).then(res=>{
            console.log('%d ℃', this.data.temp_value)
            console.log('成功更新数据库温度')
          })
          // gb.client.publish('SmartHome', JSON.stringify({Air_Temp:this.data.temp_value}), function (err) {
          //   if (!err)
          //   console.log('%d ℃', this.data.temp_value)
          // })
        }
        else {
          console.log('%d ℃', this.data.temp_value)
          console.log("温度已达下限")
        }
      }

      //对温度数据进行处理
      this.data.operation&=496//高五位保留，重置低四位温度数据
      this.data.operation|=(this.data.temp_value-16)//低四位温度数据重新赋值
      db.collection('air-conditioning').doc('8e5be7055f7dc90a016af5ab67450cec').update({
        data:{
          operation:this.data.operation
        }
      })


      if (event.target.id == "up2") {
        if (this.data.wind_speed < 3) {
          this.data.wind_speed++
          this.setData({
            wind_speed: this.data.wind_speed
          })
          //更新数据库风速
          db.collection('air-conditioning').doc('8e5be7055f7dc90a016af5ab67450cec').update({
            data:{
            windVelocity: this.data.wind_speed
            }
          }).then(res=>{
            console.log("挡位: %d", this.data.wind_speed)
            console.log('成功更新数据库风速')
          })
          // gb.client.publish('SmartHome', JSON.stringify({Wind_Speed:this.data.wind_speed}), function (err) {
          //   if (!err)
          //   console.log("挡位: %d", wind)
          // })
        }
        else {
          console.log("挡位: %d", this.data.wind_speed)
          console.log("风速已最高")
        }
      }
      else if (event.target.id == "down2") {
        if (this.data.wind_speed > 1) {
          this.data.wind_speed--
          this.setData({
            wind_speed: this.data.wind_speed
          })
          //更新数据库风速
          db.collection('air-conditioning').doc('8e5be7055f7dc90a016af5ab67450cec').update({
            data:{
            windVelocity: this.data.wind_speed
            }
          }).then(res=>{
            console.log("挡位: %d", this.data.wind_speed)
            console.log('成功更新数据库风速')
          })
          // gb.client.publish('SmartHome', JSON.stringify({Wind_Speed:this.data.wind_speed}), function (err) {
          //   if (!err)
          //   console.log("挡位: %d", wind)
          // })
        }
        else {
          console.log("挡位: %d", this.data.wind_speed)
          console.log("风速已低")
        }
      }
      //对风速数据进行处理
      this.data.operation&=127//低七位保留，重置高二位风速数据
      this.data.operation|=(this.data.wind_speed<<7)//高二位风速数据重新赋值
      db.collection('air-conditioning').doc('8e5be7055f7dc90a016af5ab67450cec').update({
        data:{
          operation:this.data.operation
        }
      })
    }
  },
  //调扫风/定向
  wind_mode: function (event) {
    var that = this
    let sw = event.detail.value
    that.data.wind_mode = sw
    let Data=sw?1:0
    if(that.data.air_pwr==true)
    {
      this.setData({
        wind_mode: this.data.wind_mode
      })
      console.log("当前风向为:",Data)
      //更新数据库
      db.collection('air-conditioning').doc('8e5be7055f7dc90a016af5ab67450cec').update({
        data:{
        windDirection: this.data.wind_mode
        }
      }).then(res=>{
        console.log(res)
      })
      if(sw)
          console.log("扫风")
          else
          console.log("定向")
      // gb.client.publish('SmartHome', JSON.stringify({Wind_Mode:Data}), function (err) {
      //   if (!err)
      //   {
      //     if(sw)
      //     console.log("扫风")
      //     else
      //     console.log("定向")
      //   }
      // })
      //对模式数据进行处理
      this.data.operation&=~(1<<5)//舍弃第六位配置(即写0)
      this.data.operation|=(Data<<5)//第六位配置数据重新赋值
      db.collection('air-conditioning').doc('8e5be7055f7dc90a016af5ab67450cec').update({
        data:{
          operation:this.data.operation
        }
      })
  }
  else
  {
    console.log("空调未开")
  }
  },
  //调睡眠
  sleep_mode: function (event) {
    var that = this
    let sw = event.detail.value
    that.data.sleep = sw
    let Data=sw?1:0
    if(that.data.air_pwr==true)
    {
      this.setData({
        sleep: this.data.sleep
      })
      console.log("当前睡眠状态为:",Data)
      if(sw)
        console.log("睡眠模式")
      else
        console.log("Normal")
      // gb.client.publish('SmartHome', JSON.stringify({Sleep:Data}), function (err) {
      //   if (!err)
      //   {
      //     if(sw)
      //   console.log("睡眠模式")
      //   else
      //   console.log("Normal")
      //   }
      // })
      //对模式数据进行处理
      this.data.operation&=~(1<<4)//舍弃第五位配置(即写0)
      this.data.operation|=(Data<<4)//第五位配置数据重新赋值
      db.collection('air-conditioning').doc('8e5be7055f7dc90a016af5ab67450cec').update({
        data:{
          operation:this.data.operation
        }
      })
    }
  else
  {
    console.log("空调未开")
  }
  },
  //总配置发布
  conFig:function(e){
    let local_operation
    db.collection('air-conditioning').doc('8e5be7055f7dc90a016af5ab67450cec').get().then(res=>{
      local_operation=res.data.operation
      console.log('拉取数据库operation的二进制值为',local_operation.toString(2))
      gb.client.publish('SmartHome', JSON.stringify({Settings:local_operation}), function (err) {
        if (!err)
        {
        console.log("配置发布成功")
        wx.showToast({
          title: '配置发布成功',
          icon: "none"
        })
        }
        else
        {
        console.log("配置发布失败，请检查故障")
        wx.showToast({
          title: '配置发布失败',
          icon: "none"
        })
        }
      })
    })  
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    // 获取mqtt实例
    // if (gb.client == '') {
    //   gb.clientCallback = res => {
    //     this.setData({ client: gb.client })
    //   }
    // } else {
    //   this.setData({ client: gb.client })
    // }


    /* 显示上一次操作用户设置过的数据 */
    db.collection('air-conditioning').doc('8e5be7055f7dc90a016af5ab67450cec').get().then(res=>{
      this.setData({
        air_mode: res.data.mode,
        wind_mode:res.data.windDirection,
        wind_speed:res.data.windVelocity,
        operation:res.data.operation
      })
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})